/**
 * @author Sheeppp
 * @param value 任意类型 
 * @returns 返回一个类型的字符串 例: "String" | 'undefined' | 'null'
 */
// export function getType(value: any): string {
// 	if (isNull(value)) return 'null';
// 	if (isUndefined(value)) return 'undefined';	
//   return Object.prototype.toString.call(value).slice(8, -1);
// }
export function getType(value: any): string {
	if (isNull(value)) return 'null';
	if (isUndefined(value)) return 'undefined';
	return value.constructor.name;
}
/**
 * 判断是否为 null
 * @param {any} value 
 * @return 
 */ 
export function isNull(value: any): boolean {
	return value === null;
}
/**
 * 判断是否为 undefined
 * @param {any} value 
 * @return 
 */ 
export function isUndefined(value: any): boolean {
	return value === undefined;
}
/**
 * 是否为空
 * @param value 任意类型
 * @returns 布尔
 */
export function isEmptyObject(value: any): boolean {
    if (value == undefined || value === null) return true;
    if (getType(value) === "String" && !value.trim()) return true;
    if (getType(value) === "Array" && value.length === 0) return true;
    if (getType(value) === "Object" && Object.keys(value).length === 0) return true;
    return false;
}
/**
 * 深度获取
 * @param value 任意类型
 * @param keyLink 字符串的获取链，例："a.0.c"
 * @returns 目标值 || 默认值 || undefined 
 */
export function deepGet(value: any, keyLink = ""): unknown {
    if (typeof value !== "object") return value;
    for (const key of keyLink.split('.')) {
        value = value[key];
        if (!value) return;
    }
    return value;
} 